VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "ClsDescuento"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Public WithEvents orset As ClsRecordset
Attribute orset.VB_VarHelpID = -1

Public Event DataChanged()

Public codigo As String
Public codTipoCliente As String
Public codCliente As String
Public codServicio As String
Public nombre As String
Public descripcion As String
Public cant_minima As Integer
Public cant_maxima As Integer
Public tipo As String
Public monto As Double

Private Sub Class_Initialize()
    Set orset = New ClsRecordset
    orset.setCampos dbCampos(dsc)
    orset.setTablas Array(dsc)
End Sub
Private Sub Class_Terminate()
    Set orset = Nothing
End Sub
Public Sub consulta()
    orset.consulta
End Sub
Public Sub consultaDatos(codig As String)
    orset.consulta Array(dsc_id & "=" & codig)
    orset.CierraRec
End Sub
Public Function consultaExiste(cantidad As Integer, _
                               cliente As ClsCliente, _
                               servicio As ClsServicio) As Boolean
    'se envia el objeto cliente y el objeto servicio
    'orden de busqueda
    '   1.- Cliente
    '       a.- Servicio
    '       b.- TipoServicio
    '   2.- TipoCliente del Cliente (Todos en orden descendente de arbol)
    '       a.- Servicio
    '       b.- TipoServicio
    consultaExiste = False
    If cliente.codigo <> "" And servicio.codigo <> "" Then
        'se puede buscar el descuento
        If Not consultaExiste Then
            'busca por cliente y servicio
            orset.consulta Array(dsc_ser_id & "=" & servicio.codigo, _
                                 dsc_cli_id & "='" & cliente.codigo & "'", _
                                 cantidad & " between " & dsc_cantidad_minima & " and " & dsc_cantidad_maxima)
            If orset.numRegistros > 0 Then
                consultaExiste = True
            End If
        End If
        If Not consultaExiste Then
            'busca por cliente y tipo de servicio
            orset.consulta Array(dsc_cli_id & "='" & cliente.codigo & "'", _
                                 cantidad & " between " & dsc_cantidad_minima & " and " & dsc_cantidad_maxima)
            If orset.numRegistros > 0 Then
                consultaExiste = True
            End If
        End If
        Dim tipocliente As ClsTipoCliente
        If Not consultaExiste Then
            'busca por tipo de cliente y servicio
            'para todos los tipos de cliente
            Set tipocliente = New ClsTipoCliente
            tipocliente.consultaXCliente cliente.codigo
            While tipocliente.orset.CanMoveNext And Not consultaExiste
                orset.consulta Array(dsc_ser_id & "=" & servicio.codigo, _
                                     dsc_tcl_id & "=" & tipocliente.codigo, _
                                     cantidad & " between " & dsc_cantidad_minima & " and " & dsc_cantidad_maxima)
                If orset.numRegistros > 0 Then
                    consultaExiste = True
                End If
                tipocliente.orset.MoveNext
            Wend
        End If
        If Not consultaExiste Then
            'busca por tipo de cliente y tipo de servicio
            'para todos los tipos de cliente
            Set tipocliente = New ClsTipoCliente
            tipocliente.consultaXCliente cliente.codigo
            While tipocliente.orset.CanMoveNext And Not consultaExiste
                orset.consulta Array(dsc_tcl_id & "=" & tipocliente.codigo, _
                                     cantidad & " between " & dsc_cantidad_minima & " and " & dsc_cantidad_maxima)
                If orset.numRegistros > 0 Then
                    consultaExiste = True
                End If
                tipocliente.orset.MoveNext
            Wend
        End If
    End If
End Function
'metodos de base de datos
Public Sub Nuevo(newTclId As String, newCliId As String, newSerId As String, newNombre As String, newDescripcion As String, newCantidadMinima As String, newCantidadMaxima As String, newTipo As String, newMonto As String)
    orset.sInsert Array("", newTclId, newCliId, newSerId, newNombre, newDescripcion, newCantidadMinima, newCantidadMaxima, newTipo, newMonto)
End Sub
Public Sub Modificar(codig As String, newTclId As String, newCliId As String, newSerId As String, newNombre As String, newDescripcion As String, newCantidadMinima As String, newCantidadMaxima As String, newTipo As String, newMonto As String)
    orset.sUpdate Array(codig, newTclId, newCliId, newSerId, newNombre, newDescripcion, newCantidadMinima, newCantidadMaxima, newTipo, newMonto)
End Sub
Public Sub Borrar(codig As String)
    orset.sDelete codig
End Sub

Private Sub Reload_members()
    With orset
        codigo = .getDato(dsc_id)
        nombre = .getDato(dsc_nombre)
        descripcion = .getDato(dsc_descripcion)
        cant_minima = .getDato(dsc_cantidad_minima)
        cant_maxima = .getDato(dsc_cantidad_maxima)
        tipo = .getDato(dsc_tipo)
        monto = .getDato(dsc_monto)
        codServicio = .getDato(dsc_ser_id)
        codTipoCliente = .getDato(dsc_tcl_id)
        codCliente = .getDato(dsc_cli_id)
    End With
    RaiseEvent DataChanged
End Sub
Private Sub orset_DataChanged()
    Reload_members
End Sub
